package cheme.ProcessModel.Visitors;

import cheme.ProcessModel.IChild;
import cheme.ProcessModel.IParent;
import cheme.ProcessModel.ProcessModel;
import cheme.ProcessModel.Annotations.Annotation;
import cheme.ProcessModel.Equations.Equation;
import cheme.ProcessModel.Equations.EquationField;
import cheme.ProcessModel.Equations.EquationList;
import cheme.ProcessModel.Equations.EquationPalette;
import cheme.ProcessModel.Equations.EquationPaletteField;
import cheme.ProcessModel.Equations.Equations;
import cheme.ProcessModel.Equations.OperatorField;
import cheme.ProcessModel.ProcessUnits.Mixer;
import cheme.ProcessModel.ProcessUnits.ProcessUnit;
import cheme.ProcessModel.ProcessUnits.Separator;
import cheme.ProcessModel.ProcessUnits.SplitJoin;
import cheme.ProcessModel.ProcessUnits.TerminalSink;
import cheme.ProcessModel.ProcessUnits.TerminalSource;
import cheme.ProcessModel.ProcessUnits.Streams.Stream;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.LabelField;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.MaterialField;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.OverallTagComponent;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.OverallUnitsField;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.QuantityField;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.Tag;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.TagComponent;
import cheme.ProcessModel.ProcessUnits.Streams.Tags.TagComponentList;
import cheme.ProcessModel.Subprocess.Subprocess;
import cheme.ProcessModel.Table.Field;

public class ModelTypeResolver implements IModelVisitor
{
	private static ModelTypeResolver instance = null;
	
	private ModelTypeResolver()
	{
	}
	
	public static ModelTypeResolver instance()
	{
		if(null == instance)
		{
			instance = new ModelTypeResolver();
		}
		
		return instance;
	}
	
	public IParent visit(IParent modelElement)
	{
		return modelElement;
	}

	public Object visit(IChild modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Annotation modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(ProcessModel modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Equation modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(EquationField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(EquationList modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(EquationPalette modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(EquationPaletteField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Equations modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(OperatorField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(ProcessUnit modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Mixer modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Separator modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(SplitJoin modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(TerminalSink modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(TerminalSource modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Stream modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Field modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(LabelField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(MaterialField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public OverallTagComponent visit(OverallTagComponent modelElement)
	{
		return modelElement;
	}

	public Object visit(OverallUnitsField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(QuantityField modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Tag modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(TagComponent modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(TagComponentList modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}

	public Object visit(Subprocess modelElement)
	{
		// TODO Auto-generated method stub
		return null;
	}
	
}
